<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <div class="btns">
        <button data-path="/home">首页</button>
        <button data-path="/news">新闻</button>
        <button data-path="/amusement">娱乐</button>
    </div>
    <div class="content"></div>
    <script>
        const oBtns = document.querySelectorAll(".btns button")
        const oContent = document.querySelector(".content")

        // 1.设置一个路由表
        const routes = [{
            path: "/home",
            component: "我是首页"
        }, {
            path: "/news",
            component: "热点新闻"
        }, {
            path: "/amusement",
            component: "娱乐焦点"
        }]

        for (let i = 0; i < routes.length; i++) {
            // 2.绑定事件，给每个按钮都绑定事件
            oBtns[i].onclick = function () {
                history.pushState(null, null, this.dataset.path)
                //3.没有监听pushState的改变的事件，所以我们在点击事件内，直接把视图展示处理了
                routes.forEach(item => {
                    if (item.path === this.dataset.path) {
                        oContent.innerHTML = item.component
                    }
                })
            }
        }
        //当使用history模式进行切换路由的时候，我们使用历史记录回退视图没有发生变化
        //所以我们要监听历史记录的改变，然后更新视图
        //使用popstate事件可以监听历史记录的改变
        window.onpopstate = function () {
            console.log(location.pathname);
            routes.forEach(item => {
                if (item.path === location.pathname) {
                    oContent.innerHTML = item.component
                }
            })
        }
    </script>
</body>

</html>